package com.quanyan.place.mapper;

import com.quanyan.place.entity.*;
import com.quanyan.place.entity.apireq.ReqPlaceGoodsVo;
import com.quanyan.place.entity.apiresp.RespOrderSetterVo;
import com.quanyan.place.entity.apiresp.RespPlaceGoodsCommonVo;
import com.quanyan.place.entity.apiresp.RespPlaceGoodsVo;
import com.quanyan.place.entity.apiresp.RespPlaceInfo;
import com.quanyan.place.entity.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface VPlaceGoodsMapper {

   /**
    * 按商品类别统计
    * @param
    * @param placeId
    * @param startTime
    * @param endTime
     * @return
     */

  /* List<RespPlaceGoodsVo> goodsSaleIncomeReport (@Param("listType") List<Integer>listType,
                                                 @Param("placeId") Integer placeId,
                                                 @Param("startTime") Date startTime,
                                                 @Param("endTime") Date endTime);*/


   List<RespPlaceGoodsVo> goodsSaleIncomeReport(@Param("placeId") Integer placeId,
                                                @Param("startTime") Date startTime,
                                                @Param("endTime") Date endTime);

   List<RespPlaceGoodsVo> goodsSaleIncomeCartReport(@Param("placeId") Integer placeId,
                                                @Param("startTime") Date startTime,
                                                @Param("endTime") Date endTime);

   List<RespPlaceGoodsVo> inventoryRecordList(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int inventoryRecordListCount(ReqPlaceGoodsVo reqPlaceGoodsVo);

   List<RespPlaceGoodsVo> getPlaceGoodsList(ReqPlaceGoodsVo reqPlaceGoodsVo);

   List<RespPlaceGoodsVo> getPlaceGoodsListNew(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int getPlaceGoodsListCount(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int getPlaceGoodsListCountNew(ReqPlaceGoodsVo reqPlaceGoodsVo);

   List<RespPlaceGoodsVo> getGoodsOrdersData(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int getGoodsOrdersDataCount(ReqPlaceGoodsVo reqPlaceGoodsVo);

   List<RespPlaceGoodsVo> getGoodsCheckData(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int getGoodsCheckDataCount(ReqPlaceGoodsVo reqPlaceGoodsVo);

   List<RespPlaceGoodsVo> getGoodsInventoryData(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int getGoodsInventoryDataCount(ReqPlaceGoodsVo reqPlaceGoodsVo);


   List<RespPlaceGoodsVo> selectGoodsInfoByBarCode(@Param("placeId") Integer placeId,
                                                   @Param("barCode") String barCode);

   List<RespPlaceGoodsVo> getGoodsRefundOrdersData(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int getGoodsRefundOrdersDataCount(ReqPlaceGoodsVo reqPlaceGoodsVo);

   List<RespPlaceGoodsVo> getGoodsInventoryHistroy(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int getGoodsInventoryHistroyCount(ReqPlaceGoodsVo reqPlaceGoodsVo);

   int getPlaceGoodsCountByTwoTypeId(@Param("placeId")Integer placeId,@Param("twoTypeId")Integer twoTypeId);

   Integer countCoodsTypeCommonList(@Param("map")Map<String, Object> map);

   List<TbBizPlaceGoodsTypeCommon> getGoodsTypeCommonList(@Param("map")Map<String, Object> map);

   Integer countCoodsCommonList(@Param("map")Map<String, Object> map);

   List<RespPlaceGoodsCommonVo> getGoodsCommonList(@Param("map")Map<String, Object> map);

   RespPlaceGoodsVo getGoodsInfoByBarCode(ReqPlaceGoodsVo reqPlaceGoodVo);

   List<TbBizPlaceGoodsTypeCommon> getGoodsLevels(@Param("map")Map<String, Object> map);

   int subtractGoodsInventory(@Param("map")Map<String,Object> map);
}